package com.leetcode.BinaryTree;

import java.util.ArrayList;
import java.util.List;

//二叉树的右视图
public class lc_199 {
    public static void main(String[] args) {

    }

    //给定一个二叉树的 根节点 root，想象自己站在它的右侧，按照从顶部到底部的顺序，返回从右侧所能看到的节点值。
    List<Integer> res = new ArrayList<>();

    public List<Integer> rightSideView(TreeNode root) {
        //1.判断:需要创建新方法,因为上下层传递的参数不可在原方法中直接传递
        dfs(root, 0);
        return res;
    }

    //2.传入传出参数:上层要给下层传递,当前的level还有下层的root, 下层不需要给上层传递东西
    public void dfs(TreeNode root, int level) {
        //3.边界条件: root = null 直接返回
        if (root == null) {
            return;
        }
        //4.每一层逻辑:根 - 右 - 左 进行遍历
        if (res.size() == level) {
            res.add(root.val);
        }
        dfs(root.right, level + 1);
        dfs(root.left, level + 1);
    }
}
